/**
 * @description 二进制文件流转bloburl (适用rosourceAPI 图片以及pdf)
 * @param {String} url 文件路径
 * @param {String} methods 请求方式 默认 GET
 * @param {Object} headers 请求头
 * @param {Object} data 请求参数 (body)
 * @param {Object} params 请求参数 (query)
 * @returns {Promise} bloburl
 */
interface BinaryToBlobUrlParams {
	url: string;
	methods?: string;
	headers?: { [key: string]: string };
	data?: any;
	params?: { [key: string]: any };
}

const binaryToBlobUrl = ({ url, methods = 'GET', headers, data, params }: BinaryToBlobUrlParams): Promise<string> => {
	if (params) {
		url +=
			'?' +
			Object.keys(params)
				.map(key => {
					return `${key}=${params[key]}`;
				})
				.join('&');
	}
	return new Promise((resolve, reject) => {
		fetch(url, {
			method: methods,
			headers: {
				'Content-Type': 'application/json', // 设置请求头，根据需要修改
				// 可能需要其他的请求头信息，根据实际情况添加
				...headers,
			},
			body: JSON.stringify(data),
		})
			.then(response => {
				// 使用 Blob 或者其他方式处理响应数据
				return response.blob();
			})
			.then(blob => {
				// 创建一个新的 URL 对象
				resolve(window.URL.createObjectURL(blob));
			})
			.catch(error => {
				console.error('发生错误：', error);
				reject();
			});
	});
};
export default binaryToBlobUrl;
